<script setup>
import { onLaunch } from '@dcloudio/uni-app'
import { ref } from 'vue'

// 添加导航锁，防止重复导航
const isNavigating = ref(false)

// 减少不必要的响应式数据 测试git
onLaunch(() => {
  console.log('App onLaunch 执行')
  
  // 这里可以添加其他初始化代码
  // 比如预加载资源、初始化全局状态等
  // 立即执行页面路由判断，避免任何延迟
  handleNavigation()
})


function handleNavigation(isForced = false) {
  // 防止重复导航
  if (isNavigating.value && !isForced) return
  isNavigating.value = true
  
  try {
    // 判断是否是首次启动
    // const launchFlag = uni.getStorageSync('launchFlag')

    uni.redirectTo({
      url: '/pages/splash/splash',
      success: () => {
        console.log('首次启动，跳转到启动视频页成功')
      },
      fail: (err) => {
        console.error('首次启动，跳转到启动视频页失败', err)
        // 失败时回退到登录选择页
        fallbackNavigation(false)
      }
    })
  } catch (error) {
    console.error('导航过程中发生错误:', error)
    isNavigating.value = false
    // 发生错误时的回退处理
    fallbackNavigation(false)
  }
}

// 故障安全导航 - 确保用户始终能看到某个页面
function fallbackNavigation(isLoggedIn) {
  try {
    if (isLoggedIn) {
      uni.reLaunch({
        url: '/pages/home/index'
      })
    } else {
      uni.reLaunch({
        url: '/pages/index'
      })
    }
  } catch (err) {
    console.error('回退导航也失败了:', err)
    // 最后的防御措施 - 重新加载应用
    location.reload()
  }
}
</script>

<template>
  <view class="app-container">
    <!-- 页面内容插槽 -->
    <slot></slot>
  </view>
</template>

<style>
/* 全局样式 - 性能优化 */
page
{
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;

    overflow-x: hidden;
    /* 禁用文本选择，避免不必要的UI事件处理 */

    user-select: none;

    background-color: #f5f5f5;
    /* 添加硬件加速 */

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    /* 提高内存和渲染性能 */
    -webkit-tap-highlight-color: transparent;
}

/* 全局性能优化 - 避免全局will-change，因为它消耗大量内存 */
/* 只在真正需要的特定元素上使用will-change */

/* 减少重绘和回流 */
.app-container
{
    position: relative;
    z-index: 1;

    box-sizing: border-box;
}

/* 简单的渐变动画 */
@keyframes fadeIn
{
    from
    {
        opacity: 0;
    }
    to
    {
        opacity: 1;
    }
}

/* 简单的上移动画 */
@keyframes slideUp
{
    from
    {
        transform: translateY(10px); opacity: 0;
    }
    to
    {
        transform: translateY(0); opacity: 1;
    }
}

</style>
